1. Field of the Invention
The present invention relates generally to methods, apparatus, and software products for processing images, and more particularly to computer implemented methods and software products for generating weighted deformations for three-dimensional geometric models.
2. Description of the Background Art
In computer graphics technology, a three-dimensional geometric model is a self-contained object or entity that can be represented by a connected set of points. A geometric model can be a simple structure such as a cube or sphere, or can be something much more complex, such as an animal's body. A deformation to a geometric model is any process that displaces some set of or all of the points in the model, which happens when parts of the model are moved, pulled, or stretched. A special deformation "control" is used to guide the direction of a deformation, and these controls are placed on the geometric model during the model creation process. For example, if the model is complex enough to have a substructure or skeleton, a model designer may associate deformation controls with the model's skeletal joints and other places (such as on muscle masses). There are several types of conventional deformation controls, for example, matrices, curves, and deformation lattices, and the types used in a geometric model depend on the modeling software and hardware employed, the characteristics of the geometric model, and the model designer's preferences.
After the substructure of the model is completed, how the surface, or "skin," of the model reacts to the deformations is defined in order to animate the motion of the model through space. Because the surface of the model is what is seen in the animation, correct and realistic deformation of the surface is desirable.
Generally, to deform a model, the designer has to specify the influence of a given deformation on the model, that is, which points on the model are affected by the deformation control and by how much. This specification is known as a "weighted deformation." For example, a point with a deformation weight of 100% for a deformation responds fully to that deformation, and a point that responds only partially to a deformation has a deformation weight of less than 100% for that deformation. When an area of the model is influenced by multiple deformation controls, a "weighted blending" process occurs to combine the effects of the different deformations to the same area. This use of weights for deformations and blending is well known to practitioners of computer graphics.
Most commercially available computer modeling systems have techniques to generate weighted deformations and to blend the effects of multiple deformations on a model. However, a major drawback to the existing techniques is that they are unsophisticated and inaccurate, and too often result in deformation weights that do not realistically simulate how the skin or surface of a structure would deform in a real object. To correct this problem, weights for individual points are typically edited by hand. This editing process is very tedious and resource intensive (in terms of time and human labor), particularly for models having hundreds, and frequently thousands of points subject to the deformation, each of which must be individually weighted.
The most common technique to generate weighted deformations, and used by currently available computer modeling systems, requires the model designer to work with three-dimensional volumes known as "primitives." A primitive is often a sphere, ellipse, box, or capsule, and the designer assigns a primitive to the set of points on the model affected by a deformation by enclosing the set of points within the volume. Deformation weights for points in the volume are based on each point's location within the volume of the primitive, and are defined by the shape of the volume.
One problem with this technique is that the designer often spends a significant amount of time orienting the primitives around the geometric model; a given model, such as a model of a person, may have hundreds of such primitives associated with it. Placement of the primitive is critical for realistic deformation, particularly in small areas such as the eyelids and lips, where improper deformation is easily detected by viewers. Thus, conventional volumetric primitives still require considerable labor for precise adjustment and control over the surfaces contained within the primitive.
A more significant problem with this technique is that the deformation weights the primitive assigns are often undesirable and do not result in smooth decreases in the deformation across the surface of the affected area on the model. This is usually because of the limitations on the shape of a primitive, as it cannot always reflect the actual shape and surface variations of the portion of the model it encompasses. For example, the weighted deformations desired for an oddly shaped figure may not match any of the primitive shapes available. Moreover, because primitives are three-dimensional volumes, they do not act directly upon the surfaces where the deformation is most desired. As a result, conventional primitives often fail to generate the desired deformation weights along complex surfaces, such as a surface with intricate folds, because the deformation weights are assigned through a space defined by the primitive instead of along the folded surface of the model or a space defined by the model itself. As an example, on a geometric model of a flat disk, suppose the designer wants to create a weighted deformation so that the deformation area is strongest in the center of one side of the disk, declines for points going toward the edge of the disk, the edge itself, and points moving away from the edge on the opposite side of the disk, and finally is the weakest at the center point on the opposite side. A three-dimensional primitive, such as a cylinder, cannot be used to generate this type of weighted deformation because it cannot account for decreases in the deformation weight across the surface of the disk, only through the volume of the primitive itself.
Because the shortcomings of existing weighted deformation generation techniques typically result in the assignment of undesirable deformation weights to the points in the area assigned to a deformation, it is often necessary for the designer to manually edit the weights of individual points to create the desired effect on the geometric model's surface. As noted, this process can be very time consuming and thereby can considerably add to the production cost of an animation.
Accordingly, there is a need for an improved method for generating weighted deformations on surfaces that overcomes the disadvantages of the conventional techniques. Because the need for generating accurate weighted deformations to geometric models is commonly experienced in the computer graphics industry, it is desirable to provide a software product that can be applied directly to these models and requires minimal operator intervention, without the need to modify existing modeling tools.